np-hard and np-complete problems and concepts